﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using eTMS.Controllers;
using eTMS.Controllers.NamHocService;
using eTMS.Forms.Reports;
using Button = eTMS.Controls.Button;
using eTMS.Controllers.LopService;
using eTMS.Controllers.NganhHocService;

namespace eTMS.Forms.Students
{
    public partial class FrmSinhVienList : eTMS.Controls.BaseForm
    {
        public FrmSinhVienList()
        {
            InitializeComponent();
        }
        SinhVienController sinhVienController = new SinhVienController();
        private eTMS.Controls.Button btnChuyenNganh;
        private eTMS.Controls.Button btnTaoMa;
        private eTMS.Controls.Button btnTaoAcc;
        private eTMS.Controls.Button btnBaoLuu;

        private void FrmSinhVienList_Load(object sender, EventArgs e)
        {
            searchSinhVien1.SetController(sinhVienController);
            ucCommandButton1.SetPrintVisible(true);
            ucCommandButton1.SetSaveVisible(false);
            ucCommandButton1.SetSkipVisible(false); ;
            ucCommandButton1.SetImportVisible(true);
            ucCommandButton1.ResetAllPos();
            btnTaoMa = new Button();
            btnTaoMa.Text = "Tạo mã SV";
            btnTaoMa.Width = 100;
            ucCommandButton1.AddButton(btnTaoMa);
            btnTaoMa.Click += new EventHandler(btnTaoMa_Click);

            btnChuyenNganh = new Button();
            btnChuyenNganh.Text = "Chuyển ngành";
            btnChuyenNganh.Width = 100;
            ucCommandButton1.AddButton(btnChuyenNganh);
            btnChuyenNganh.Click += new EventHandler(btnChuyenNganh_Click);



            btnBaoLuu = new Button();
            btnBaoLuu.Text = "Bảo lưu";
            btnBaoLuu.Width = 100;
            ucCommandButton1.AddButton(btnBaoLuu);
            btnBaoLuu.Click += new EventHandler(btnBaoLuu_Click);


            btnTaoAcc = new Button();
            btnTaoAcc.Text = "Tạo tài khoản";
            btnTaoAcc.Width = 120;
            ucCommandButton1.AddButton(btnTaoAcc);
            btnTaoAcc.Click += new EventHandler(btnTaoAcc_Click);
        }

        void btnBaoLuu_Click(object sender, EventArgs e)
        {
            throw new NotImplementedException();
        }

        void btnTaoAcc_Click(object sender, EventArgs e)
        {
            if ((searchSinhVien1.SelectedLop_ID <= 0) && (searchSinhVien1.SelectedNganhHoc_ID <= 0))
            {
                ShowWarning("Bạn phải chọn một lớp hoặc một ngành học để chọn sinh viên bảo lưu!");
                return;
            }
            searchSinhVien1.UpdateObjectToModel();
            FrmBaoLuuSinhVien frmBaoLuu = new FrmBaoLuuSinhVien();
            frmBaoLuu.SetController(sinhVienController);
            if (frmBaoLuu.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                searchSinhVien1.UpdateToScreen();
            }
        }

        void btnChuyenNganh_Click(object sender, EventArgs e)
        {
            if ((searchSinhVien1.SelectedLop_ID <= 0) && (searchSinhVien1.SelectedNganhHoc_ID <= 0))
            {
                ShowWarning("Bạn phải chọn một lớp hoặc một ngành học để chuyển ngành cho sinh viên!");
                return;
            }
            searchSinhVien1.UpdateObjectToModel();
            FrmChuyenNganhHoc frmChuyenNganhHoc = new FrmChuyenNganhHoc();
            frmChuyenNganhHoc.SetDataRows(searchSinhVien1.GetSelectedSinhVienRows());
            frmChuyenNganhHoc.KhoaHoc_ID = searchSinhVien1.KhoaHoc_ID;
            if (frmChuyenNganhHoc.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                searchSinhVien1.UpdateToScreen();
            }
        }

        void btnTaoMa_Click(object sender, EventArgs e)
        {
            FrmDanhMaSinhVien frmDanhMaSinhVien = new FrmDanhMaSinhVien();
            NamHocEntity namHocEntity = NamHocController.GetCurrentNamHoc();
            if (namHocEntity != null)
                frmDanhMaSinhVien.MaNamHoc = namHocEntity.MaNamHoc.ToString();
            frmDanhMaSinhVien.SetListSinhVien(searchSinhVien1.GetSelectedSinhVienRows());
            if (frmDanhMaSinhVien.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                searchSinhVien1.UpdateToScreen();
            }
        }

        private void ucCommandButton1_OnAddNew(object sender, EventArgs e)
        {
            if ((searchSinhVien1.SelectedLop_ID <= 0) && (searchSinhVien1.SelectedNganhHoc_ID <= 0))
            {
                ShowWarning("Bạn phải chọn một lớp hoặc một ngành học để thêm mới sinh viên!");
                return;
            }
            FrmSinhVienAddNew frmSinhVienAddNew = new FrmSinhVienAddNew();
            frmSinhVienAddNew.SetAddNew(sinhVienController);
            if (frmSinhVienAddNew.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                if (searchSinhVien1.SelectedLop_ID > 0)
                {
                    //Add To PhanNganh,  Lop
                    LopEntity lopEntity = searchSinhVien1.GetSelectedLop();
                    sinhVienController.SavePhanNganh(lopEntity.NganhHoc_ID, lopEntity.KhoaHoc_ID, false);
                    sinhVienController.AddCurrentSinhVienToLop(lopEntity.Lop_ID);
                }
                else
                {
                    NganhHocEntity nganhHocEntity = searchSinhVien1.GetSelectedNganhHoc();
                    sinhVienController.SavePhanNganh(nganhHocEntity.NganhHoc_ID, searchSinhVien1.KhoaHoc_ID, false);
                }
                searchSinhVien1.UpdateToScreen();
            }
        }

        private void ucCommandButton1_OnEdit(object sender, EventArgs e)
        {
            searchSinhVien1.UpdateObjectToModel();
            FrmSinhVienAddNew frmSinhVienAddNew = new FrmSinhVienAddNew();
            frmSinhVienAddNew.SetAddEdit(sinhVienController);
            if (frmSinhVienAddNew.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                //Update List

            }
        }

        private void ucCommandButton1_OnDelete(object sender, EventArgs e)
        {
            //Delete selected row
            List<DataRow> lsRows = searchSinhVien1.GetSelectedSinhVienRows();
            if (lsRows.Count > 0)
            {
                if (Confirm(eTMS.Commons.Constants.MSS_CONFIRM_DELETE))
                {
                    List<int> lsSinhVien_ID = new List<int>();
                    foreach (DataRow row in lsRows)
                    {
                        lsSinhVien_ID.Add(sinhVienController.ConvertInt(row["SinhVien_ID"]));
                    }
                    if (sinhVienController.DeleteSinhVienByListSinhVien_ID(lsSinhVien_ID))
                    {
                        searchSinhVien1.UpdateToScreen();
                    }
                    else
                    {
                        ShowWarning(eTMS.Commons.Constants.MSS_SAVE_FAILE);
                    }
                }
            }
        }

        private void ucCommandButton1_OnPrint(object sender, EventArgs e)
        {
            Reports.FrmHtmlReportView frmHtmlReportView = new FrmHtmlReportView();
            frmHtmlReportView.SetDataSource(sinhVienController.Table, "01_DanhSachSVTheoLop.htm");
            frmHtmlReportView.ShowDialog();
        }

        private void ucCommandButton1_OnImport(object sender, EventArgs e)
        {
            FrmSinhVienImport frm = new FrmSinhVienImport();
            if (frm.ShowDialog() == DialogResult.OK)
            {
                searchSinhVien1.UpdateToScreen();
            }
        }
    }
}
